﻿/**
 * @file furniturewidget.h
 * @author tjc
 * @brief 家居设备控制界面模块
 * @version 1.0
 * @date 2024-2-22
 */
#ifndef FURNITURE_H
#define FURNITURE_H
#include <QWidget>
#include <QPainter>
#include <QPushButton>
#include <QVBoxLayout>
#include <QMessageBox>
#include <QLabel>
#include <QLineEdit>
#include <QResizeEvent>
#include <Qtimer>
#include <QComboBox>
#include "tcpserver.h"
#include "common.h"
class FurnitureWidget : public QWidget
{
    Q_OBJECT
public:
    FurnitureWidget(QWidget *parent = nullptr);
    ~FurnitureWidget();
    //画线
    void paintEvent(QPaintEvent *event);
    //厨房灯
    QLabel *kitchenLampLabel;
    QPushButton *kitchenLampButton;
    QPushButton *kitchenLampButtonLighter;
    QPushButton *kitchenLampButtonDarker;
    bool isKitchenLamp;
    //厨房油烟机
    QLabel *kitchenVentilatorLabel;
    QLabel *kitchenVentilatorLabel2;
    QPushButton *kitchenVentilatorButton;
    QComboBox *kitchenVentilatorSelect;
    //餐厅灯
    QLabel *diningRoomLampLabel;
    QPushButton *diningRoomLampButton;
    QPushButton *diningRoomLampButtonLighter;
    QPushButton *diningRoomLampButtonDarker;
    bool isDiningRoomLamp;
    //卫生间灯
    QLabel *toiletLampLabel;
    QPushButton *toiletLampButton;
    QPushButton *toiletLampButtonLighter;
    QPushButton *toiletLampButtonDarker;
    bool isToiletLamp;
    //次卧灯
    QLabel *secondBedroomLampLabel;
    QPushButton *secondBedroomLampButton;
    QPushButton *secondBedroomLampButtonLighter;
    QPushButton *secondBedroomLampButtonDarker;
    bool isSecondBedroomLamp;
    //书房灯
    QLabel *studyRoomLampLabel;
    QPushButton *studyRoomLampButton;
    QPushButton *studyRoomLampButtonLighter;
    QPushButton *studyRoomLampButtonDarker;
    bool isStudyRoomLamp;
    //书房空调
    QLabel *studyRoomAirLabel;
    QLabel *studyRoomAirLabel2;
    QPushButton *studyRoomAirButton;
    QComboBox *studyRoomAirSelect;
    //客厅灯
    QLabel *livingRoomLampLabel;
    QPushButton *livingRoomLampButton;
    QPushButton *livingRoomLampButtonLighter;
    QPushButton *livingRoomLampButtonDarker;
    bool isLivingRoomLamp;
    //客厅空调
    QLabel *livingRoomAirLabel;
    QLabel *livingRoomAirLabel2;
    QPushButton *livingRoomAirButton;
    QComboBox *livingRoomAirSelect;
    //客厅温度
    QLineEdit *livingRoomTempEdit;
    //客厅湿度
    QLineEdit *livingRoomHumidityEdit;
    //主卧灯
    QLabel *masterBedroomLampLabel;
    QPushButton *masterBedroomLampButton;
    QPushButton *masterBedroomLampButtonLighter;
    QPushButton *masterBedroomLampButtonDarker;
    bool isMasterBedroomLamp;
    //主卧空调
    QLabel *masterBedroomAirLabel;
    QLabel *masterBedroomAirLabel2;
    QPushButton *masterBedroomAirButton;
    QComboBox *masterBedroomAirSelect;
    //主卧温度
    QLineEdit *masterRoomTempEdit;
    //主卧湿度
    QLineEdit *masterRoomHumidityEdit;
    //FutcpServer
    FuTcpServer *fuTcpServer;
    //定时器
    QTimer *envTimer;
    //回复厨房灯控制指令后的处理
    void kitchenLampAfterOn(const QByteArray &ack);
    void kitchenLampAfterOff(const QByteArray &ack);
    //回复厨房油烟机控制指令后的处理
    void kitchenVentilatorAfter(const QByteArray &ack);
    //回复餐厅灯控制指令后的处理
    void diningRoomLampAfterOn(const QByteArray &ack);
    void diningRoomLampAfterOff(const QByteArray &ack);
    //回复卫生间灯控制指令后的处理
    void toiletLampAfterOn(const QByteArray &ack);
    void toiletLampAfterOff(const QByteArray &ack);
    //回复次卧灯控制指令后的处理
    void secondBedroomLampAfterOn(const QByteArray &ack);
    void secondBedroomLampAfterOff(const QByteArray &ack);
    //回复书房灯控制指令后的处理
    void studyRoomLampAfterOn(const QByteArray &ack);
    void studyRoomLampAfterOff(const QByteArray &ack);
    //回复书房空调控制指令后的处理
    void studyRoomAirAfter(const QByteArray &ack);
    //回复客厅灯控制指令后的处理
    void livingRoomLampAfterOn(const QByteArray &ack);
    void livingRoomLampAfterOff(const QByteArray &ack);
    //回复客厅空调控制指令后的处理
    void livingRoomAirAfter(const QByteArray &ack);
    //回复客厅温度控制指令后的处理
    void livingRoomTempEditAfter(const QByteArray &ack);
    //回复客厅温度控制指令后的处理
    void livingRoomHumidityEditAfter(const QByteArray &ack);
    //回复主卧灯控制指令后的处理
    void masterBedroomLampAfterOn(const QByteArray &ack);
    void masterBedroomLampAfterOff(const QByteArray &ack);
    //回复主卧空调控制指令后的处理
    void masterBedroomAirAfter(const QByteArray &ack);
    //回复主卧温度控制指令后的处理
    void masterRoomTempEditAfter(const QByteArray &ack);
    //回复主卧温度控制指令后的处理
    void masterRoomHumidityEditAfter(const QByteArray &ack);
    // 温湿度更新函数
    void updateLivingRoomTemp(const QString &temp);
    void updateLivingRoomHumidity(const QString &humidity);
    void updateMasterRoomTemp(const QString &temp);
    void updateMasterRoomHumidity(const QString &humidity);
    // 请求温湿度函数
    void requestEnvData();


public slots:
    // 厨房油烟机控制槽函数
    void slot_kitchenVentilator();
    // 厨房灯控制槽函数
    void slot_kitchenLamp();
    // 餐厅灯控制槽函数
    void slot_diningRoomLamp();
    // 卫生间灯控制槽函数
    void slot_toiletLamp();
    // 次卧灯控制槽函数
    void slot_secondBedroomLamp();
    // 书房灯控制槽函数
    void slot_studyRoomLamp();
    // 书房空调控制槽函数
    void slot_studyRoomAir();
    // 客厅灯控制槽函数
    void slot_livingRoomLamp();
    // 客厅空调控制槽函数
    void slot_livingRoomAir();
    // 主卧灯控制槽函数
    void slot_masterBedroomLamp();
    // 主卧空调控制槽函数
    void slot_masterBedroomAir();



};
#endif // FURNITURE_H
